{
struct pci_dev *pdev = NULL;
- ASSERT(spin_is_locked(&pcidevs_lock));
-
list_for_each_entry ( pdev, &alldevs_list, alldevs_list )
if ( (pdev->bus == bus || bus == -1) &&
(pdev->devfn == devfn || devfn == -1) &&
memset(rhsau, 0, sizeof(struct acpi_rhsa_unit));
rhsau->address = rhsa->address;
- rhsau->domain = rhsa->domain;
+ rhsau->proximity_domain = rhsa->proximity_domain;
list_add_tail(&rhsau->list, &acpi_rhsa_units);
return ret;
struct acpi_rhsa_unit *rhsa;
struct page_info *pg;
u64 *vaddr;
+ int node = -1;
rhsa = drhd_to_rhsa(drhd);
+ if ( rhsa )
+ node = pxm_to_node(rhsa->proximity_domain);
+
pg = alloc_domheap_pages(NULL, get_order_from_pages(npages),
- rhsa ? rhsa->domain : 0);
+ (node == -1 ) ? 0 : MEMF_node(node));
if ( !pg )
return 0;
vaddr = map_domain_page(page_to_mfn(pg));
ASSERT(spin_is_locked(&hd->mapping_lock));
if ( hd->pgd_maddr == 0 )
{
+ /*
+ * just get any passthrough device in the domainr - assume user
+ * assigns only devices from same node to a given guest.
+ */
pdev = pci_get_pdev_by_domain(domain, -1, -1);
drhd = acpi_find_matched_drhd_unit(pdev);
if ( !alloc || ((hd->pgd_maddr = alloc_pgtable_maddr(drhd, 1)) == 0) )